package com.akaovi.chatroom.process;

import com.akaovi.chatroom.mess.Message;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * @author akaovi
 * @version 1.0
 * @description
 * @date 2022/12/7 17:19
 * @since 2022/12/7 17:19
 */
public class UserManage {
    private static final Map<Integer, UserThread> currentOnlineUser = new HashMap<>();

    /**
     * 通过账号查找用户
     *
     * @param account 账号
     * @return 用户线程
     */
    public static UserThread getUserByAccount(int account) {
        return currentOnlineUser.get(account);
    }

    /**
     * 添加一个用户（上线）
     *
     * @param account    账号
     * @param userThread 用户线程
     */
    public static void add(int account, UserThread userThread) {
        currentOnlineUser.put(account, userThread);
    }

    /**
     * 删除一个在线用户用户
     *
     * @param account 账号
     */
    public static void remove(int account) {
        currentOnlineUser.remove(account);
    }

    /**
     * 获取总在线人数
     *
     * @return 总在线人数
     */
    public static int getOnlineUserCount() {
        return currentOnlineUser.size();
    }

    /**
     * 广播消息
     *
     * @param mess 待发送消息
     */
    public static void broadcast(Message mess) {
        currentOnlineUser.forEach((account, userThread) -> {
            try {
                userThread.oos.writeObject(mess);
                userThread.oos.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }
}
